package org.apache.rocketmq.store.queue;

import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.common.BoundaryType;
import org.apache.rocketmq.common.attribute.CQType;
import org.apache.rocketmq.common.message.MessageExtBrokerInner;
import org.apache.rocketmq.store.DispatchRequest;
import org.apache.rocketmq.store.MappedFileQueue;
import org.apache.rocketmq.store.MessageFilter;
import org.apache.rocketmq.store.MessageStore;
import org.rocksdb.RocksDBException;

import java.io.File;
import java.nio.ByteBuffer;

/**
 * @课程描述:从零带你写框架系列中的课程，整个系列包含netty，xxl-job，rocketmq，nacos，sofajraft，spring，springboot，disruptor，编译器，虚拟机等等。
 * @author：陈清风扬，个人微信号：chenqingfengyangjj。
 * @date:2025/6/25
 * @方法描述：第十三版本引入该类只是为了程序不报错
 */
public class BatchConsumeQueue implements ConsumeQueueInterface{

    public static final int CQ_STORE_UNIT_SIZE = 46;

    public BatchConsumeQueue(
            final String topic,
            final int queueId,
            final String storePath,
            final int mappedFileSize,
            final MessageStore defaultMessageStore) {
        this(topic, queueId, storePath, mappedFileSize, defaultMessageStore, StringUtils.EMPTY);
    }

    public BatchConsumeQueue(
            final String topic,
            final int queueId,
            final String storePath,
            final int mappedFileSize,
            final MessageStore messageStore,
            final String subfolder) {
        //这里就不做实现了
    }

    @Override
    public String getTopic() {
        return "";
    }

    @Override
    public int getQueueId() {
        return 0;
    }

    @Override
    public long getLastOffset() {
        return 0;
    }

    @Override
    public long getMinOffsetInQueue() {
        return 0;
    }

    @Override
    public long getMaxOffsetInQueue() {
        return 0;
    }

    @Override
    public long getMessageTotalInQueue() {
        return 0;
    }

    @Override
    public long getOffsetInQueueByTime(long timestamp) {
        return 0;
    }

    @Override
    public long getOffsetInQueueByTime(long timestamp, BoundaryType boundaryType) {
        return 0;
    }

    @Override
    public long getMaxPhysicOffset() {
        return 0;
    }

    @Override
    public long getMinLogicOffset() {
        return 0;
    }

    @Override
    public CQType getCQType() {
        return null;
    }

    @Override
    public long getTotalSize() {
        return 0;
    }

    @Override
    public int getUnitSize() {
        return 0;
    }

    @Override
    public void correctMinOffset(long minCommitLogOffset) {

    }

    @Override
    public void putMessagePositionInfoWrapper(DispatchRequest request) {

    }

    @Override
    public void assignQueueOffset(QueueOffsetOperator queueOffsetAssigner, MessageExtBrokerInner msg) throws RocksDBException {

    }

    @Override
    public void increaseQueueOffset(QueueOffsetOperator queueOffsetAssigner, MessageExtBrokerInner msg, short messageNum) {

    }

    @Override
    public long estimateMessageCount(long from, long to, MessageFilter filter) {
        return 0;
    }

    @Override
    public boolean load() {
        return false;
    }

    @Override
    public void recover() {

    }

    @Override
    public void checkSelf() {

    }

    @Override
    public boolean flush(int flushLeastPages) {
        return false;
    }

    @Override
    public void destroy() {

    }

    @Override
    public void truncateDirtyLogicFiles(long maxCommitLogPos) {

    }

    @Override
    public int deleteExpiredFile(long minCommitLogPos) {
        return 0;
    }

    @Override
    public long rollNextFile(long nextBeginOffset) {
        return 0;
    }

    @Override
    public boolean isFirstFileAvailable() {
        return false;
    }

    @Override
    public boolean isFirstFileExist() {
        return false;
    }

    @Override
    public void swapMap(int reserveNum, long forceSwapIntervalMs, long normalSwapIntervalMs) {

    }

    @Override
    public void cleanSwappedMap(long forceCleanSwapIntervalMs) {

    }
}
